export type ErrorActionInfo = {
  code: number //错误码
  key?: string //错误key
  message: string //错误描述
  promptText?: string //UI上显示的提示文案
  presentOrNot: boolean //是否呈现
  actionType?: number //	展示形式(presentOrNot为false则无),
  actionName?: string //弹窗按钮名称(actionType为0则无)
  actionMethod?: string //弹窗按钮方法
}
export enum ActionMethodType {
  LOGIN = 'LOGIN',
  GOTOPAIR = 'GO_TO_PAIR',
}
export enum ActionType {
  TOAST = 0, // 0: 3秒toast
  CLOSE_DIALOG = 1, //1: 弹窗待用户关闭
  HANDLE_DIALOG = 2, //  2: 弹窗待交互
}
export type wxErrorInfo = {
  errMsg?: string
  errCode?: number
  errno?: number
}
const errorList: Array<ErrorActionInfo> = [
  /***********solutiou server 错误码 **************/
  {
    code: 10000,
    key: '',
    message: '请求服务器失败，请稍后重试',
    promptText: '服务器异常',
    presentOrNot: true,
    actionType: ActionType.TOAST,
  },
  {
    code: 10001,
    key: '',
    message: '未登录，请登录或注册',
    promptText: '未获取到账号信息，请重新登录',
    presentOrNot: true,
    actionType: ActionType.HANDLE_DIALOG,
    actionName: '去登录',
    actionMethod: ActionMethodType.LOGIN,
  },
  {
    code: 10002,
    key: '',
    message: '参数错误或缺失',
    promptText: '请求服务器失败',
    presentOrNot: true,
    actionType: ActionType.TOAST,
  },
  {
    code: 10003,
    key: '',
    message: '请求服务器失败，请稍后重试',
    promptText: '服务器未响应',
    presentOrNot: true,
    actionType: ActionType.TOAST,
  },
  {
    code: 10004,
    key: '',
    message: '网络异常',
    promptText: '网络异常',
    presentOrNot: true,
    actionType: ActionType.TOAST,
  },
  {
    code: 10005,
    key: '',
    message: '获取toc/dpt版本号错误',
    promptText: '获取信息失败',
    presentOrNot: true,
    actionType: ActionType.TOAST,
  },
  {
    code: 10009,
    key: '',
    message: '获取toc/dpt版本号错误',
    promptText: '获取信息失败',
    presentOrNot: true,
    actionType: ActionType.TOAST,
  },
  {
    code: 10013,
    key: '',
    message: '解密数据失败',
    promptText: '获取数据失败',
    presentOrNot: true,
    actionType: ActionType.TOAST,
  },
  {
    code: 10015,
    key: '',
    message: '用户不存在该家电',
    promptText: '家电已被移除或被取消分享',
    presentOrNot: true,
    actionType: ActionType.CLOSE_DIALOG,
    actionName: '确定',
  },
  {
    code: 10017,
    key: '',
    message: '调用菜谱中台接口失败',
    promptText: '内容访问失败',
    presentOrNot: true,
    actionType: ActionType.TOAST,
  },
  {
    code: 10020,
    key: '',
    message: '用户token过期',
    promptText: '未获取到账号信息，请重新登录',
    presentOrNot: true,
    actionType: ActionType.HANDLE_DIALOG,
    actionName: '去登录',
    actionMethod: ActionMethodType.LOGIN,
  },
  {
    code: 10021,
    key: '',
    message: '用户token调用用户信息返回401',
    promptText: '未获取到账号信息，请重新登录',
    presentOrNot: true,
    actionType: ActionType.HANDLE_DIALOG,
    actionName: '去登录',
    actionMethod: ActionMethodType.LOGIN,
  },
  {
    code: 20000,
    key: '',
    message: '登录失败，请重新登录',
    promptText: '未获取到账号信息，请重新登录',
    presentOrNot: true,
    actionType: ActionType.HANDLE_DIALOG,
    actionName: '去登录',
    actionMethod: ActionMethodType.LOGIN,
  },
  {
    code: 20003,
    key: '',
    message: '未登录，请登录或注册',
    promptText: '未获取到账号信息，请重新登录',
    presentOrNot: true,
    actionType: ActionType.HANDLE_DIALOG,
    actionName: '去登录',
    actionMethod: ActionMethodType.LOGIN,
  },
  {
    code: 20008,
    key: '',
    message: '获取用户信息失败',
    promptText: '获取用户信息失败',
    presentOrNot: true,
    actionType: ActionType.TOAST,
  },
  {
    code: 20012,
    key: '',
    message: '家电已被移除或取消共享',
    promptText: '家电已被移除或取消分享',
    presentOrNot: true,
    actionType: ActionType.CLOSE_DIALOG,
    actionName: '确定',
  },
  {
    code: 20015,
    key: '',
    message: '该家电已被分享者移除',
    promptText: '接受分享失败，该家电已被分享者移除',
    presentOrNot: true,
    actionType: ActionType.CLOSE_DIALOG,
    actionName: '确定',
  },
  {
    code: 20019,
    key: '',
    message: '用户没有智能音箱',
    promptText: '暂未配对智能音箱，点击立即配对',
    presentOrNot: true,
    actionType: ActionType.HANDLE_DIALOG,
    actionName: '去连接',
    actionMethod: ActionMethodType.GOTOPAIR,
  },
  {
    code: 30002,
    key: '',
    message: '该家电型号不存在',
    promptText: '该家电型号不存在',
    presentOrNot: true,
    actionType: ActionType.TOAST,
  },
  {
    code: 30003,
    key: '',
    message: '获取型号关联模板失败',
    promptText: '未获取到家电联网指南',
    presentOrNot: true,
    actionType: ActionType.TOAST,
  },
  {
    code: 30004,
    key: '',
    message: '获取配对模板失败',
    promptText: '未获取到家电联网指南',
    presentOrNot: true,
    actionType: ActionType.TOAST,
  },
  {
    code: 30007,
    key: '',
    message: '未获取到该家电serialnumber',
    promptText: '',
    presentOrNot: false,
  },
  {
    code: 30008,
    key: '',
    message: '该家电未配置modelId',
    promptText: '',
    presentOrNot: false,
  },
  {
    code: 40001,
    key: '',
    message: '接受分享失败，分享已过期',
    promptText: '分享已失效，接受分享失败',
    presentOrNot: true,
    actionType: ActionType.CLOSE_DIALOG,
    actionName: '确定',
  },
  {
    code: 40002,
    key: '',
    message: '接受分享失败，不能接受已经拥有的设备',
    promptText: '已接受分享',
    presentOrNot: true,
    actionType: ActionType.CLOSE_DIALOG,
    actionName: '确定',
  },
  {
    code: 40003,
    key: '',
    message: '拒绝分享失败，不能拒绝已失效的分享',
    promptText: '拒绝分享失败，分享已失效',
    presentOrNot: true,
    actionType: ActionType.CLOSE_DIALOG,
    actionName: '确定',
  },
  {
    code: 40004,
    key: '',
    message: '删除分享失败，不能删除非本人或已失效的分享',
    promptText: '删除分享失败',
    presentOrNot: true,
    actionType: ActionType.CLOSE_DIALOG,
    actionName: '确定',
  },
  {
    code: 40006,
    key: '',
    message: '接受分享失败，分享已失效',
    promptText: '分享不存在或者分享已失效',
    presentOrNot: true,
    actionType: ActionType.CLOSE_DIALOG,
    actionName: '确定',
  },
  {
    code: 40007,
    key: '',
    message: '不可以分享被分享的家电',
    promptText: '不可以将已接受分享的家电分享给其他用户',
    presentOrNot: true,
    actionType: ActionType.CLOSE_DIALOG,
    actionName: '确定',
  },
  {
    code: 40014,
    key: '',
    message: '接受分享失败，不能接受自己的分享',
    promptText: '接受分享失败，不能接受自己的分享',
    presentOrNot: true,
    actionType: ActionType.CLOSE_DIALOG,
    actionName: '确定',
  },
  {
    code: 60004,
    key: "",
    message: "当前收藏程序不存在",
    promptText: "当前收藏程序不存在",
    presentOrNot: true,
    actionType: ActionType.CLOSE_DIALOG,
    actionName: "确定"
  },
  {
    code: 60016,
    key: "",
    message: "收藏程序已经存在",
    promptText: "收藏程序已经存在",
    presentOrNot: true,
    actionType: ActionType.CLOSE_DIALOG,
    actionName: "确定"
  },
  {
    code: 60017,
    key: "",
    message: "目前仅支持5个收藏程序，请先取消不需要的温度收藏吧",
    promptText: "目前仅支持5个收藏程序，请先取消不需要的温度收藏吧",
    presentOrNot: true,
    actionType: ActionType.CLOSE_DIALOG,
    actionName: "确定"
  },
  /**********************HCA 错误码 *************************/
  {
    code: 404,
    key: 'SDK.Error.NoProgramSelected',
    message: '不支持该指令',
    promptText: '请先选择程序哦',
    presentOrNot: true,
    actionType: ActionType.CLOSE_DIALOG,
    actionName: '确定',
  },
  {
    code: 409,
    key: 'SDK.Error.UnsupportedCommand',
    message: '不支持该指令',
    promptText: '不支持此操作',
    presentOrNot: true,
    actionType: ActionType.CLOSE_DIALOG,
    actionName: '确定',
  },
  // {
  //   code: 409,
  //   key: 'SDK.Error.Cooking.Oven.Status.FrontPanelOpen',
  //   message: '控制面板未关上，请关上面板后重试',
  //   promptText: '控制面板未关上，请关上面板后重试',
  //   presentOrNot: true,
  //   actionType: ActionType.CLOSE_DIALOG,
  //   actionName: '确定',
  // },
  {
    code: 409,
    key: 'SDK.Error.HomeAppliance.RequestTimeout',
    message: '家电未及时响应。可能家电已离线，请检查家电状态后重试',
    promptText: '家电连接异常，请检查',
    presentOrNot: true,
    actionType: ActionType.CLOSE_DIALOG,
    actionName: '确定',
  },
  {
    code: 409,
    key: 'SDK.Error.HomeAppliance.Connection.Initialization.Timeout',
    message: '向家电发送连接初始化请求，家电未反应。可能家电已离线，请检查家电状态后重试',
    promptText: '家电连接异常，请检查',
    presentOrNot: true,
    actionType: ActionType.CLOSE_DIALOG,
    actionName: '确定',
  },
  {
    code: 409,
    key: 'SDK.Error.HomeAppliance.Connection.Initialization.Failed',
    message: '操作过于频繁，家电未响应，请稍后重试',
    promptText: '操作过于频繁，家电未响应，请稍后重试',
    presentOrNot: true,
    actionType: ActionType.CLOSE_DIALOG,
    actionName: '确定',
  },
  {
    code: 409,
    key: 'SDK.Error.UnsupportedProgram',
    message: '不支持该程序',
    promptText: '不支持选中此程序',
    presentOrNot: true,
    actionType: ActionType.CLOSE_DIALOG,
    actionName: '确定',
  },
  {
    code: 409,
    key: 'SDK.Error.UnsupportedOption',
    message: '不支持该程序的选项',
    promptText: '不支持选中此参数',
    presentOrNot: true,
    actionType: ActionType.CLOSE_DIALOG,
    actionName: '确定',
  },
  {
    code:409,
    key:'SDK.Error.ProgramNotAvailable',
    message: '不支持该程序',
    promptText: '不支持选中此程序',
    presentOrNot: true,
    actionType: ActionType.CLOSE_DIALOG,
    actionName: '确定',
  },
  {
    code: 409,
    key: 'SDK.Error.WrongDoorState',
    message: '家电门未关好，请检查后重试',
    promptText: '家电门未关好，请检查后重试',
    presentOrNot: true,
    actionType: ActionType.CLOSE_DIALOG,
    actionName: '确定',
  },
  {
    code: 409,
    key: 'BSH.Common.Error.LockedByLocalControl',
    message: '家电正在被本地控制中，请稍后再试',
    promptText: '家电正在被本地控制中，请稍后再试',
    presentOrNot: true,
    actionType: ActionType.CLOSE_DIALOG,
    actionName: '确定',
  },
  {
    code: 409,
    key: 'SDK.Error.UnsupportedSetting',
    message: '不支持的设置',
    promptText: '不支持进行此设置',
    presentOrNot: true,
    actionType: ActionType.CLOSE_DIALOG,
    actionName: '确定',
  },
  {
    code: 409,
    key: 'SDK.Error.UnsupportedStatus',
    message: '不支持的状态',
    promptText: '不支持的状态',
    presentOrNot: true,
    actionType: ActionType.CLOSE_DIALOG,
    actionName: '确定',
  },
  {
    code: 409,
    key: 'SDK.Error.UnsupportedOperation',
    message: '家电类型不支持的操作',
    promptText: '不支持的操作',
    presentOrNot: true,
    actionType: ActionType.CLOSE_DIALOG,
    actionName: '确定',
  },
  {
    code: 409,
    key: 'SDK.Error.UnsupportedUnit',
    message: '不支持的单位',
    promptText: '不支持的单位',
    presentOrNot: true,
    actionType: ActionType.CLOSE_DIALOG,
    actionName: '确定',
  },
  {
    code: 409,
    key: 'SDK.Error.UnsupportedKey',
    message: '不支持的key',
    promptText: '不支持的key',
    presentOrNot: true,
    actionType: ActionType.CLOSE_DIALOG,
    actionName: '确定',
  },
  {
    code: 409,
    key: 'SDK.Error.WrongOperationState',
    message: '请检查家电是否处于可用状态',
    promptText: '此运行状态下无法执行此操作',
    presentOrNot: true,
    actionType: ActionType.CLOSE_DIALOG,
    actionName: '确定',
  },
  {
    code:409,
    key:'SDK.Error.WrongProgramState',
    message: '此运行状态下无法执行此操作',
    promptText: '此运行状态下无法执行此操作',
    presentOrNot: true,
    actionType: ActionType.CLOSE_DIALOG,
    actionName: '确定',

  },
  {
    code:409,
    key:'SDK.Error.ActiveProgramSet',
    message: '此运行状态下无法执行此操作',
    promptText: '此运行状态下无法执行此操作',
    presentOrNot: true,
    actionType: ActionType.CLOSE_DIALOG,
    actionName: '确定',
  },
  // {
  //   code: 409,
  //   key: 'SDK.Error.MissingOptionValue',
  //   message: '不支持当前的程序选项组合',
  //   promptText: '不支持当前的程序选项组合',
  //   presentOrNot: true,
  //   actionType: ActionType.CLOSE_DIALOG,
  //   actionName: '确定',
  // },
  {
    code: 409,
    key: 'SDK.Error.InvalidOptionValue',
    message: '不支持当前的程序选项组合',
    promptText: '不支持选中此参数',
    presentOrNot: true,
    actionType: ActionType.CLOSE_DIALOG,
    actionName: '确定',
  },
  {
    code: 409,
    key: 'SDK.Error.InvalidOptionCombination',
    message: '不支持当前的程序选项组合',
    promptText: '不支持当前的程序选项组合',
    presentOrNot: true,
    actionType: ActionType.CLOSE_DIALOG,
    actionName: '确定',
  },
  {
    code: 409,
    key: 'SDK.Error.InvalidSettingState',
    message: '不支持进行此设置',
    promptText: '不支持进行此设置',
    presentOrNot: true,
    actionType: ActionType.CLOSE_DIALOG,
    actionName: '确定',
  },
  {
    code: 409,
    key: 'SDK.Error.InvalidSettingValue',
    message: '不支持进行此设置',
    promptText: '不支持进行此设置',
    presentOrNot: true,
    actionType: ActionType.CLOSE_DIALOG,
    actionName: '确定',
  },
  {
    code: 409,
    key: 'SDK.Error.InvalidCommandState',
    message: '操作失败，请检查家电当前是否处于正常可操作状态，然后重试',
    promptText: '操作失败，请检查家电当前是否处于正常可操作状态，然后重试',
    presentOrNot: true,
    actionType: ActionType.CLOSE_DIALOG,
    actionName: '确定',
  },
  {
    code: 409,
    key: 'SDK.Error.NoProgramActive',
    message: '无激活程序',
    promptText: '未启动程序',
    presentOrNot: true,
    actionType: ActionType.CLOSE_DIALOG,
    actionName: '确定',
  },
  // {
  //   code: 409,
  //   key: 'SDK.Error.HomeAppliance.TooManyHomeAppliances',
  //   message: '帐户中的家电太多',
  //   promptText: '帐户中的家电太多',
  //   presentOrNot: true,
  //   actionType: ActionType.CLOSE_DIALOG,
  //   actionName: '确定',
  // },
  {
    code: 409,
    key: 'SDK.Error.ProgramNotWritable',
    message: '设置家电未成功,请检查家电是否处于正常状态',
    promptText: '不支持选中此程序',
    presentOrNot: true,
    actionType: ActionType.CLOSE_DIALOG,
    actionName: '确定',
  },
  // {
  //   code: 409,
  //   key: 'SDK.Error.ProgramNotStartable',
  //   message: '该程序已为您发送至家电，出于安全考虑，请在家电端启动',
  //   promptText: '该程序已为您发送至家电，出于安全考虑，请在家电端启动',
  //   presentOrNot: true,
  //   actionType: ActionType.CLOSE_DIALOG,
  //   actionName: '确定',
  // },
  // {
  //   code: 409,
  //   key: 'SDK.Error.HomeAppliance.UnknownCode.528',
  //   message: '服务器异常，请稍候重试',
  //   promptText: '服务器异常，请稍候重试',
  //   presentOrNot: true,
  //   actionType: ActionType.CLOSE_DIALOG,
  //   actionName: '确定',
  // },
  {
    code: 409,
    key: 'SDK.Error.InvalidOptionState',
    message: '当前选择状态不可用',
    promptText: '不支持选中此参数',
    presentOrNot: true,
    actionType: ActionType.CLOSE_DIALOG,
    actionName: '确定',
  },
  {
    code: 400,
    key: '',
    message: '服务器异常，请稍后重试',
    promptText: '服务器异常',
    presentOrNot: true,
    actionType: ActionType.TOAST,
  },
  {
    code: 401,
    key: '401',
    message: '服务器异常，请稍后重试',
    promptText: '服务器异常',
    presentOrNot: true,
    actionType: ActionType.TOAST,
  },
  {
    code: 401,
    key: 'invalid_token',
    message: '账户不存在，请注册后登录',
    promptText: '未获取到账号信息，请重新登录',
    presentOrNot: true,
    actionType: ActionType.HANDLE_DIALOG,
    actionName: '去登录',
    actionMethod: ActionMethodType.LOGIN,
  },
  {
    code: 403,
    key: '',
    message: '家电已被移除，无法再继续使用',
    promptText: '家电已被移除，无法再继续使用',
    presentOrNot: true,
    actionType: ActionType.TOAST,
  },
  {
    code: 406,
    key: '',
    message: '服务器异常，请稍后重试',
    promptText: '服务器异常',
    presentOrNot: true,
    actionType: ActionType.TOAST,
  },
  {
    code: 415,
    key: '',
    message: '服务器异常，请稍后重试',
    promptText: '服务器异常',
    presentOrNot: true,
    actionType: ActionType.TOAST,
  },
  {
    code: 429,
    key: '429',
    message: '您的请求次数过多，请24小时后再尝试',
    promptText: '您的请求次数过多，请24小时后再尝试',
    presentOrNot: true,
    actionType: ActionType.TOAST,
  },
  {
    code: 623,
    key: '',
    message: '请重新登录',
    promptText: '未获取到账号信息，请重新登录',
    presentOrNot: true,
    actionType: ActionType.HANDLE_DIALOG,
    actionName: '去登录',
    actionMethod: ActionMethodType.LOGIN,
  },
  /*****************OEM的错误码*******************/
  {
    code: 910000,
    key: '',
    message: '系统异常',
    promptText: '服务器异常',
    presentOrNot: true,
    actionType: ActionType.TOAST,
  },
  {
    code: 910001,
    key: '',
    message: '登录已过期，请重新登录',
    promptText: '未获取到账号信息，请重新登录',
    presentOrNot: true,
    actionType: ActionType.HANDLE_DIALOG,
    actionName: '去登录',
    actionMethod: ActionMethodType.LOGIN,
  },
  {
    code: 910002,
    key: '',
    message: '参数错误或缺失',
    promptText: '请求服务器失败',
    presentOrNot: true,
    actionType: ActionType.TOAST,
  },
  {
    code: 910003,
    key: '',
    message: '数据库操作失败',
    promptText: '服务器未响应',
    presentOrNot: true,
    actionType: ActionType.TOAST,
  },
  {
    code: 910004,
    key: '',
    message: '网络异常',
    promptText: '网络异常',
    presentOrNot: true,
    actionType: ActionType.TOAST,
  },
  {
    code: 910005,
    key: '',
    message: '系统繁忙',
    promptText: '服务器异常',
    presentOrNot: true,
    actionType: ActionType.TOAST,
  },
  {
    code: 911001,
    key: '',
    message: '设备已重置',
    promptText: '设备已重置',
    presentOrNot: true,
    actionType: ActionType.TOAST,
  },
  {
    code: 911003,
    key: '',
    message: '控制指令错误',
    promptText: '控制指令错误',
    presentOrNot: true,
    actionType: ActionType.TOAST,
  },
  {
    code: 911004,
    key: '',
    message: '系统异常',
    promptText: '服务器异常',
    presentOrNot: true,
    actionType: ActionType.TOAST,
  },
  {
    code: 912001,
    key: '',
    message: '设备未重置完成',
    promptText: '设备未重置完成',
    presentOrNot: true,
    actionType: ActionType.TOAST,
  },
  {
    code: 912002,
    key: '',
    message: '设备已解绑',
    promptText: '设备已解绑',
    presentOrNot: true,
    actionType: ActionType.TOAST,
  },
  {
    code: 950002,
    key: '',
    message: '系统异常',
    promptText: '服务器异常',
    presentOrNot: true,
    actionType: ActionType.TOAST,
  },
  {
    code: 950003,
    key: '',
    message: '系统异常',
    promptText: '服务器异常',
    presentOrNot: true,
    actionType: ActionType.TOAST,
  },
  {
    code: 950004,
    key: '',
    message: '系统异常',
    promptText: '服务器异常',
    presentOrNot: true,
    actionType: ActionType.TOAST,
  },
  {
    code: 950005,
    key: '',
    message: '系统异常',
    promptText: '服务器异常',
    presentOrNot: true,
    actionType: ActionType.TOAST,
  },
  {
    code: 950006,
    key: '',
    message: '网络异常',
    promptText: '网络异常',
    presentOrNot: true,
    actionType: ActionType.TOAST,
  },
]

export default errorList
